﻿using System.Threading.Tasks;
using com.IronOne.BoardPACWinAppBO.Auth;
using com.IronOne.BoardPACWinAppBO.General;
using com.IronOne.BoardPACWinAppBO.Settings;
using com.IronOne.BoardPACWinAppUtil.Enums;

namespace com.IronOne.BoardPACWinAppService.Auth
{
    public interface IAuthService
    {
        Task<ResponseDataModel> LogOn(LogOnModel logOnModel);
        Task<ResponseDataModel> LogOnOffline(LogOnModel logOnModel);
        Task<DeviceModel> GetDeviceAuthStatus();
        Task<bool> SetDeviceAuthStatus(DeviceModel deviceModel);
        Task<DeviceModel> AuthorizeDevice(LogOnModel logOnModel);
        Task<ResponseDataModel> DeviceAuthorizeStatus(string deviceId);
        Task<AppSettingModel> GetSupportInfoFromDb();
        Task<object> GetSettingValueBySettingName(DatabaseType dbtype, string settingName);
        Task<object> GetSettingUsageValueBySettingName(string settingName);
        Task<bool> SetSettingUsageValueBySettingName(string settingName, string value);
        Task<ResponseDataModel> ChangePassword(LogOnModel logOnModel);
        Task Logout();
        Task<ResponseDataModel> WipeoutDevice();
        Task<ResponseDataModel> ResetDevice();
        Task<bool> CleanDecryptedAgendaItems();
        Task<UserModel> GetUserFromId();
        bool CloseAllConnections();
        Task<AppSettingModel> GetAppVersions();

        Task<string> CheckAndInitiateDateFormat();
    }
}